import java.util.Scanner;

public class HelloBit {


    public static void main13(String[] args) {
        int sum = 0;
        int ret = 1;
        for (int j = 1; j <= 7; j++) {
            for (int i = 1; i <= 5; i++) {
                ret *= i;
            }
            sum += ret;
        }
    }
    public static int fac(int num) {
        int ret = 1;
        for (int i = 1; i <= num; i++) {
            ret *= i;
        }
        return ret;
    }
    public static int facSum(int num) {
        int sum = 0;
        for (int j = 1; j <= num; j++) {
            sum += fac(j);
        }
        return sum;
    }
    //注意点：方法不能嵌套定义，但是方法可以嵌套调用，方法一定是在类里面定义。
    //和C语言不同，方法在主函数的前后都可以，不需要进行函数声明
    //方法的执行是在一块内存当中的，这块内存叫做栈,方法结束后，为方法开辟的栈帧就被回收了
    //总结：方法的调用是在栈上的，当方法遇到return或者遇到右花括号代表方法结束了，方法结
    //束了栈帧就被回收了
    public static void main12(String[] args) {
        for (int i = 1; i <= 520; i++) {
            System.out.print(i+" ");
            loveYou();
        }
    }
    public static void loveYou() {
        System.out.println("I Love You");
    }


//    在调用方法时传给方法的参数称为实参，方法定义列表时
//    的参数形成形式参数，返回值可直接使用
    //定义方法 （决定返回值 方法名(小驼峰) 参数列表）
    //调用方法  方法名（），传参
    //方法有返回值吗？返回值接收后要怎么使用？
    //如果方法没有返回值，则直接返回void

    public static void main11(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(add(a, b));
        System.out.println(add(10, 20));
        System.out.println(add(100, 200));
        System.out.println(5 * (add(10, 20)));
    }
    public static  int add(int x,int y) {
        return x+y;
    }
    //方法的调用 方法名（参数）

    public static void main10(String[] args) {
        //方法-》相当于C语言中的函数

        //将一个普遍的问题的解决方法（某个功能）的代码封装起来
        //需要时直接使用就好，不需要重复代码
        //减少重复性工作，让代码更清爽
        System.out.println(is_LeapYear(100));
        boolean flag = is_LeapYear(2000);
        System.out.println(flag);
        //在调用方法时，参数的个数，类型，顺序要一一匹配
        //返回值接收时也需要匹配类型


    }
    //public 访问修饰限定符号 static 返回值 方法名（参数列表） 方法体
    //尽量减少在方法体中打印，在方法体中打印会降低方法的普适性
    public static void is_LeapYear2(int year) {
        if ((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0))){
            System.out.println("闰年");
        }
        System.out.println("不是闰年");
    }

    public static boolean is_LeapYear(int year) {
        boolean flag = false;
        if ((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0))){
            return true;
        }
        return true;
    }



    //球的是9的个数，而不是带有9的数字的个数，所以99要重复两次
    public static void main9(String[] args) {
        int count = 0;
        for (int i = 1; i <= 100; i++) {
            if (i % 10 == 9) {
                count++;
            }
            if(i / 10 == 9) {
                count++;
            }
        }
        System.out.println(count);
    }

    public static void main8(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        for (int i = 0; i < 30; i += 2) {
            System.out.print((n << i) & (1 << 31));
        }
        System.out.println();
        for (int i = 1; i < 31; i+=2) {
            System.out.print((n << i) & (1 << 31));
        }
        System.out.println(1<<31);
    }
    //如果左移的话 1000000000000000000000000000000 和 1<<31 相与
    // 后的结果是-2147483648，如果将数变成无符号数，则可以，但是java中
    // 没有无符号数的概念

    public static void main7(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        for (int i = 31; i >= 1; i -= 2) {
            System.out.print((n >> i) & 1);
        }
        System.out.println();
        for (int i = 30; i >= 0 ; i -= 2) {
            System.out.print((n >> i) & 1);
        }

    }
    public static void main5(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int temp = n;
        int count = 0;
        //这里不管几个1，都要循环执行32次
        for (int i = 0; i < 32; i++) {
            if (((temp >>> i) & 1) != 0) {
                count++;
            }
        }
        System.out.println(count);
        //这里如果为0，说明没1，则直接退出
        count = 0;
        while (temp != 0) {
            if ((temp & 1) != 0) {
                count++;
            }
            temp = temp >>> 1;
            //必须是无符号右移，不然负数就会报错
        }
        System.out.println(count);

        count = 0;
        temp = n;
        while(temp != 0) {
            temp = temp & (temp - 1);
            count++;
        }
        System.out.println(count);
    }
    //水仙花数  三位自幂数
    //如何获得每一位数字，每一位数字
    public static void main4(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        for (int i = 1; i < n; i++) {
            int temp = i;
            int count = 0;
            while(temp != 0){
                temp /= 10;
                count++;
                //i /= 10;count计算出来了，但是i被磨损了
            }
            temp = i;
            int sum = 0;
            while(temp !=0) {
                sum += Math.pow(temp%10 ,count);
                temp /= 10;
            }
            if(sum == i){
                System.out.println(i+"是水仙花数");
            }

        }


    }
    public static void main3(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = scanner.nextInt();
        int t = n % m;
        while(t != 0) {
            n = m;
            m = t;
            t = n % m;
        }
        System.out.println(m);
    }

    public static void main1(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();

        for (int j = 2; j <= 100; j++) {
            int i = 0;
            for (i = 2; i < j; i++) {
                if(j % i == 0){
                    System.out.println(j+"不是素数");
                    break;
                }
            }
            if(i == j){
                System.out.println(i+"是素数");
            }
        }


    }

    public static void main2(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(i+"*"+j+"="+i*j+"  ");
            }
            System.out.println();
        }
    }


    public static void age(int age){
        if(age <= 18){
            System.out.println("少年");
        }else if (age >= 28){
            System.out.println("青年");
        }else if (age >= 48) {
            System.out.println("壮年");
        }else {
            System.out.println("老年");
        }

    }
    //只能被1和自身整除
    public static boolean isPrimer1(int num){
        int i = 1;
        for (i = 2; i < num; i++) {
            if(num % i == 0) {
                return false;
            }
        }
        if(i == num) {
            return true;
        }
        return false;
    }

    //在因子中，一定有一个<=n/2
    public static boolean isPrimer2(int num){
        int i = 1;
        for (i = 2; i <= num/2; i++) {
            if(num % i == 0) {
                return false;
            }
        }
        if(i == num) {
            return true;
        }
        return false;
    }
    //将数拆成两个因子，一定有一个小于等于开
    // 平方n，如果前面没有的话，后面也不会有
    public static boolean isPrimer3(int num){
        int i = 1;
        for (i = 2; i <= Math.sqrt(num); i++) {
            if(num % i == 0) {
                return false;
            }
        }
        if(i == num) {
            return true;
        }
        return false;
    }
    public static boolean test(){

        if(1 >= 0) {
            return false;
        }else {
            return true;
        }
//        {
//            System.out.println("1111");
//            return false;
//        }
    }



    //java.lang编译器会自动导包，其他的需要自己导包

}
